package cn.cdutetc.library.service;

import cn.cdutetc.library.entity.dto.FeeVO;
import cn.cdutetc.library.entity.dto.FeeRecordVO;
import cn.cdutetc.library.entity.dto.FeeStatisticsVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 * 费用服务接口
 */
public interface FeeService {

    /**
     * 计算逾期罚款
     * @param userId 用户ID
     * @return 费用信息
     */
    FeeVO calculateOverdueFee(Integer userId);

    /**
     * 计算损坏赔偿费用
     * @param userId 用户ID
     * @param bookId 图书ID
     * @param damageRatio 损坏赔偿比例
     * @return 费用信息
     */
    FeeVO calculateDamageFee(Integer userId, Integer bookId, double damageRatio);

    /**
     * 计算丢失赔偿费用
     * @param userId 用户ID
     * @param bookId 图书ID
     * @param lostRatio 丢失赔偿比例
     * @return 费用信息
     */
    FeeVO calculateLostFee(Integer userId, Integer bookId, double lostRatio);

    /**
     * 分页获取用户费用记录
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @param feeType 费用类型
     * @param status 状态
     * @return 费用记录分页结果
     */
    IPage<FeeRecordVO> getUserFeeRecords(Integer userId, Integer page, Integer size, String feeType, String status);

    /**
     * 获取用户费用统计
     * @param userId 用户ID
     * @return 费用统计信息
     */
    FeeStatisticsVO getUserFeeStatistics(Integer userId);

    /**
     * 支付费用
     * @param feeId 费用ID
     * @param payMethod 支付方式
     * @return 是否成功
     */
    boolean payFee(Integer feeId, String payMethod);

}
